package com.example.ttt.functions;

import com.example.ttt.jcomp.JFrameComponent;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

/*
* 修改本地文件为用户头像
* */
@Component
@Slf4j
public class Button_UpdateAvatar {

    @Autowired
    private JFrameComponent jFrameComponent;

    /*
    * 获取头像控件
    * 打开文件选择弹窗
    * 将文件拷贝到本地的静态文件夹中
    * 进行修改并加载
    * 在每次初始加载的时候地址更换为此地址
    * */
    public void UpdateAvatar(){
        JLabel avatar = jFrameComponent.getAvatar();

        /*
        * new一个文件管理器空间
        * 显示创建的文件管理器
        * 获取选择的文件的绝对路径
        * */
        JFileChooser jFileChooser = jFrameComponent.getJFileChooser();
        jFileChooser = new JFileChooser();
        jFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        jFileChooser.showOpenDialog(null);
        File file = jFileChooser.getSelectedFile();
        /*
        * 将文件加载到static资源文件夹中
        * 替换icon.png默认的头像图片
        * */
        String path = Button_UpdateAvatar.class.getClassLoader().getResource("static/icon.png").getPath();
        if (path.substring(0,5).equals("file:")){
            path = path.substring(6,path.length());
        }
        File returnFile = new File(path);
        try {
            log.info("file地址：{}",file.getAbsolutePath());
            log.info("returnFile地址：{}",returnFile.getPath());
            FileUtils.copyFile(file,returnFile,false);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        // 重新加载头像
        ImageIcon imageIcon = new ImageIcon(new ImageIcon(path).getImage().getScaledInstance(90, 90, Image.SCALE_SMOOTH));
        avatar.setIcon(imageIcon);
        log.info("头像替换成功：{}",path);
    }
}
